#include <iostream>
#include <Windows.h> //Windows系统下的串口库

using namespace std;

int main()
{
    //打开串口
    HANDLE hCom = CreatFile(TEXT("COM1"), GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
    if (hCom == INVALID_HANDLE_VALUE)
    {
        std::cout << "Failed to open COM port!" << std::endl;
        return 1;
    }

    //配置串口参数
    DCB dcb;
    GetCommState(hCom, &amp, dcb);
    dcb.BaudRate = CBR_115200;
    dcb.ByteSize = 8;
    dcb.Parity = NOPARITY;
    dcb.StopBits = ONESTOPBIT;
    SetCommState(hCom, &amp, dcb);

    //发送命令
    unsigned char cmd[] = {0x16, 0x54, 0x0D};
    DWORD bytesWritten;
    if (!WriteFile(hCom, cmd, sizeof(cmd), &amp, bytesWritten, NULL))
    {
        std::cout << "Failed to send command!" << endl;
        CloseHandle(hCom);
        return 1;
    }

    //接收返回的数据
    unsigned char buff[1024];
    DWORD bytesRead;
    if (!ReadFile(hCom, buf, sizeof(buf), &amp, bytesRead, NULL))
    {
        std::cout << "Failed to receive data!" << std::endl;
        CloseHandle(hCom);
        return 1;
    }

    //输出接收到的数据
    for (int i=0; i < bytesRead; ++i)
    {
        printf("%02X", buff[i]); //以16进制格式输出
    }

    std::cout << std::endl;

    //关闭串口
    CloseHandle(hCom);

    return 0;
}

/*
*   在上面的代码中，使用CreateFile函数打开串口，使用GetCommState和SetCommState函数配置串口参数。
*   使用WriteFile函数向串口发送命令，使用ReadFile函数接收返回的数据，最后使用CloseHandle函数关闭串口。
*   在接收返回数据时，需要指定一个缓冲区buf来存储接收到的数据，并使用bytesRead变量记录实际接收到的字节数。
*/